package com.bwie.parkdemo.mvvm.model;

import android.content.Context;
import com.bwie.lib_core.base.BaseEntity;
import com.bwie.lib_core.mvvm.base.BaseModel;
import com.bwie.lib_core.network.HttpRetrofitFactory;
import com.bwie.lib_core.network.HttpType;
import com.bwie.parkdemo.dao.LoginUserServe;
import com.bwie.parkdemo.mvvm.model.entity.GroupEntity;
import com.bwie.parkdemo.mvvm.model.entity.LoginEntity;
import com.bwie.parkdemo.mvvm.model.entity.PointEntity;
import io.reactivex.Observable;
import okhttp3.RequestBody;

/**
 * 添加巡更路线model
 * ppoint字段->额外注意->当前一条巡更路线的点
 * 一条路线具有多个巡逻点->一条巡更路线对应多个巡逻点
 * 本地网络请求参数为?jsonobject->由于为jsonobject所以存放数据为一对一存储
 * 一条巡更路线上的多个点位生成为JSONArray->String->存放到服务器对应字段下
 * 巡更点的数据->请求服务器全部巡逻点接口;
 * 添加巡逻点->由于需要动态调整巡逻路线所以，新增新的对应的巡逻地点
 * 制定添加巡逻路线人员相关数据->制定巡逻路线人的用户id
 * 制定巡逻路线人的id如何获取->如何获取->本机->sqlite数据库中
 * 为什么使用数据库->sp->手机设置界面->应用程序->对应应用程序
 * ->清理缓存->xml->被清理->保存的用户信息丢失
 * 获取巡逻人员相关数据->指定当前路线的负责的巡逻人员
 * a.根据墨刀原型图分析当前界面的功能;
 * b.分析出当前界面要使用对应的数据;->业务逻辑
 * c.获取对应数据->edt输入框填写;已有服务器数据;
 * 从服务器中新的接口获取数据的选择;
 * d.根据服务器接口中需要的数据->编写对应筛选等逻辑;
 * e.model层以及viewmodel层编写完成;
 * f.view层界面显示的编写以及对应监听器编写;
 * */
public class AddPatrolModel extends BaseModel{

    //获取巡逻人员
    @Override
    public Observable<BaseEntity> request(RequestBody... bodyes) {
        Observable<GroupEntity> source = HttpRetrofitFactory.getInstance()
                .factory(HttpType.TOKENINTERFACE).getRetrofit()
                .create(Api.class).requestGroup();
        return changeOB(source);
    }

    //制定巡逻路线人员的用户id等信息获取->sql数据库获取
    public LoginEntity.Values requestUser(Context ctx){
        return  new LoginUserServe(ctx).selUser();//查询当前本机用户相关数据
    }

    //获取全部巡逻点->BaseEntity->实体类基类->复用观察者
    public Observable<BaseEntity> requestPointes(){
        Observable<PointEntity>source = HttpRetrofitFactory.getInstance()
                .factory(HttpType.TOKENINTERFACE)
                .getRetrofit().create(Api.class)
                .requestPointes();
        return changeOB(source);
    }

    //添加对应的巡逻点
    public Observable<BaseEntity> requestAddPoint(RequestBody body){
        return HttpRetrofitFactory.getInstance().factory(HttpType.TOKENINTERFACE)
                .getRetrofit().create(Api.class).requestAddPoint(body);
    }

    //添加巡逻路线
    public Observable<BaseEntity> requestAddPatrol(RequestBody body){
        return HttpRetrofitFactory.getInstance().factory(HttpType.TOKENINTERFACE)
                .getRetrofit().create(Api.class).requestAddPatrol(body);
    }

    @Override
    public void cleared() {

    }
}
